module dgl.graphics.ShaderParameterCollection;

import dgl.Vector2;
import dgl.Vector3;
import dgl.Vector4;
import dgl.Matrix;

import dgl.graphics.ShaderProgram;
import dgl.graphics.Texture2D;

class ShaderParameterCollection
{
	protected ShaderProgram m_program;
	
	public this( ShaderProgram program )
	{
		m_program = program;
	}
	
	public abstract void opIndexAssign( int value, char[] parameterName );
	
	public abstract void opIndexAssign( float value, char[] parameterName );
	
	public abstract void opIndexAssign( Vector2 value, char[] parameterName );
	
	public abstract void opIndexAssign( Vector3 value, char[] parameterName );
	
	public abstract void opIndexAssign( Vector4 value, char[] parameterName );
	
	public abstract void opIndexAssign( Matrix value, char[] parameterName );
	
	public abstract void opIndexAssign( Texture2D value, char[] parameterName );
}